#pragma once

namespace AVUI {

/// <summary>Represents a request to move focus to another control. </summary>
class TraversalRequest : public Object
{
public:
    DECLARE_ELEMENT(TraversalRequest, Object);

#pragma region Public Methods

    /// <summary>Initializes a new instance of the <see cref="T:System.Windows.Input.TraversalRequest" /> class. </summary>
    /// <param name="focusNavigationDirection">The intended direction of the focus traversal, as a value of the enumeration.</param>
    TraversalRequest(FocusNavigationDirection::Enum focusNavigationDirection) : m_focusNavigationDirection(focusNavigationDirection), m_wrapped(false) { }

#pragma endregion Public Methods

#pragma region Public Properties

    /// <summary>Gets the traversal direction. </summary>
    /// <returns>One of the traversal direction enumeration values.</returns>
    FocusNavigationDirection::Enum get_FocusNavigationDirection() { return m_focusNavigationDirection; }

    /// <summary> Gets or sets a value that indicates whether focus traversal has reached the end of child elements that can have focus. </summary>
    /// <returns>true if this traversal has reached the end of child elements that can have focus; otherwise, false. The default is false.</returns>
    bool get_Wrapped() { return m_wrapped; }
    bool set_Wrapped(bool value) { m_wrapped = value; }

#pragma endregion Public Properties

private:

#pragma region Private Fields
    FocusNavigationDirection::Enum m_focusNavigationDirection;
    bool m_wrapped;
#pragma endregion Private Fields
};


}; // namespace AVUI

